package com.algorithm.liyc.practice;

import java.util.Locale;

/**
 * 左旋转字符串
 * 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如，输入字符串"abcdefg"和数字2，该函数将返回左旋转两位得到的结果"cdefgab"。
 *
 * @author Liyc
 * @date 2023/12/13 16:56
 **/

public class Solution27 {
    /**
     * 1. 反转区间为前n的子串
     * 2. 反转区间为n到末尾的子串
     * 3. 反转整个字符串
     * @param s
     * @param n
     * @return
     */
    public String reverseLeftWords(String s, int n) {
        char[] chars = s.toCharArray();
        resver(chars, 0, s.length() - 1);
        resver(chars, 0, s.length() - 1 - n);
        resver(chars, s.length() - n, s.length() - 1);
        return new String(chars);
    }

    public void resver(char[] chars, int left, int right) {
        while (left < right) {
            chars[left] ^= chars[right];
            chars[right] ^= chars[left];
            chars[left] ^= chars[right];
            left++;
            right--;
        }
    }
}
